package enumTest;

import com.google.gson.Gson;

/**
* @author jie
* @version 创建时间：2018年6月19日 下午4:51:24
* 类说明
 * 枚举比较名字。的内容是否相等。
 *
 * 枚举的位置。决定 ordinal。 不影响自定义的value
 * 		CYCLE((byte) 0), TIMING((byte) 2), NOW((byte) 3), IINTERVALCYCLE((byte) 1), MAT((byte) 4);
 * //		CYCLE((byte) 0), NOW((byte) 3),TIMING((byte) 2),  IINTERVALCYCLE((byte) 1), MAT((byte) 4); // 影响 ordinal ,不影响 value
 *
*/
public class EnumOridinal_Value {
	public static void main(String[] args) {
		
		//TODO 测试解析 Enum
		String enumStr="{\"mType\":\"CYCLE\",\"abc\":\"111\"}";
		Gson gson = new Gson();
	    EnumGsonTest fromJson = gson.fromJson(enumStr,EnumGsonTest.class);
	    System.out.println("解析Enum是否相等=="+fromJson.getmType().equals(EnumOridinal_Value.Type.CYCLE));//true
	    System.out.println("解析Enum是否相等== 地址："+fromJson.getmType() +" "+(EnumOridinal_Value.Type.CYCLE));//CYCLE CYCLE
	    System.out.println("解析Enum是否相等== 地址比较"+(fromJson.getmType()==EnumOridinal_Value.Type.CYCLE));//true


		byte byteType = Type.getByteType("NOW");
		System.out.println("Type.getByteType(\"NOW\")=="+byteType);
		System.out.println("Type.NOW.ordinal()=="+Type.NOW.ordinal());//2
		System.out.println("Type.NOW.value()=="+Type.NOW.value());//3

		System.out.println(Type.CYCLE.value());
	}
	
	
	public enum Type {
		CYCLE((byte) 0), TIMING((byte) 2), NOW((byte) 3), IINTERVALCYCLE((byte) 1), MAT((byte) 4);
//		CYCLE((byte) 0), NOW((byte) 3),TIMING((byte) 2),  IINTERVALCYCLE((byte) 1), MAT((byte) 4); // 影响 ordinal ,不影响 value
		private byte value;

		private Type(byte value) {
			this.value = value;
		}

		public byte value() {
			return this.value;
		}

		// 普通方法  
		public static byte getByteType(String str) {
			for (Type c : Type.values()) {
				if (c.name().equals(str)) {
					return c.value;
				}
			}
			return 0;
		}
	}
}
class EnumGsonTest{
	EnumOridinal_Value.Type mType;
	String abc;

	public EnumOridinal_Value.Type getmType() {
		return mType;
	}
	public void setmType(EnumOridinal_Value.Type mType) {
		this.mType = mType;
	}
	public String getAbc() {
		return abc;
	}
	public void setAbc(String abc) {
		this.abc = abc;
	}
		
}
